The present invention relates to computers, and more particularly to device drivers which provide interface services between a computer and its external devices.
Conventional microprocessor based machines known as personal computers (PC), typically include external devices such as a cathode ray tube (CRT) display, keyboard, tablet, mouse and a printer for generating or receiving various data which are passed into or out of the PC. In the case where signals are generated by a user manipulating one or more of the external devices, such signals represent data that must be changed into a form suitable for an application program which is operating in the computer and which needs to receive that data. Conversely, any data produced by the application program must also be changed into suitable form before such data can be used by one of the external devices.
Usually containing many lines of code, application programs typically include device drivers which are relatively small programs for controlling and interfacing with external devices. Device drivers provide data structuring ability so that the application program and the external devices can communicate with one another. There is one device driver for each external device which will have access to or be accessed by the application program. This arrangement thus permits great flexibility to accommodate any differences between one particular external device and another. For example, coordinate pointing devices such as a mouse, joystick and a tablet can each be used so long as the three respective device drivers can be loaded into the application program. Moreover, devices of the same type but which have different operating characteristics, can each be accommodated.
With the rise in popularity of computer applications which require graphical inputs, the conventional digitizing tablet is often used as an external device. As can be appreciated, there are now many tablet devices available which has resulted in a correspondingly large number of tablet device drivers to accommodate the variety of commercial offerings and graphical input capabilities.
A problem has arisen if additional data processing is desired for inputs which may contain unwanted noise or if some special data handling is needed for an individual user. For example, a handicapped user may have trouble creating smooth straight or curved lines on a tablet. Since application programs contain relatively large amounts of code, changes may be difficult and thus costly to implement. Although device drivers contain relatively small amounts of code, each of the proliferation must be rewritten to accommodate the special changes. Again, making changes require much effort and attendant cost.